/**
 * 防抖工具类
 * */
/**
 * @desc 函数防抖
 * @param func 需要执行的函数
 * @param wait 延迟执行时间（毫秒）
 **/
export function debounce(func: Function, wait: number): any {
  let time: any
  // @ts-ignore
  let context = this
  let args = arguments
  return function () {
    if (time) {
      clearTimeout(time)
    }
    time = setTimeout(function () {
      func.apply(context, args)
    }, wait)
  }
}

/**
 * 防重工具(同一时间段，只执行最后一次)
 * @param fun 执行函数
 * @param time 延迟执行时间
 */
let timer: any = null
export function preventRepeat(fun: any, time = 500): void {
  clearTimeout(timer)
  timer = setTimeout(() => {
    fun.apply()
  }, time)
}
